﻿@* Supprimer cette section si le regroupement est utilisé*@
@section Scripts {
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
}

@{
    Layout = "~/_SiteLayout.cshtml";
    Page.Title = "Forgot your password ?";

    bool passwordSent = false;
    var resetToken = "";
    var email = Request.Form["email"] ?? Request.QueryString["email"];

    // Validation de la configuration
    Validation.RequireField("email", "The email adress is needed.");

    if (IsPost) {
        AntiForgery.Validate();
        // valider l'adresse de messagerie
        bool isValid = true;
        if (Validation.IsValid()) {
            if (WebSecurity.GetUserId(email) > -1 && WebSecurity.IsConfirmed(email)) {
                resetToken = WebSecurity.GeneratePasswordResetToken(email); // Indiquez une date d'expiration pour le jeton (facultatif)
            } else {
                passwordSent = true; // Nous ne souhaitons pas indiquer que l'utilisateur n'existe pas.
                isValid = false;
            }
        }
        if (isValid) {
            var hostUrl = Request.Url.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped);
            var resetUrl = hostUrl + VirtualPathUtility.ToAbsolute("~/Account/PasswordReset?resetToken=" + HttpUtility.UrlEncode(resetToken));
            WebMail.Send(
                to: email,
                subject: "Réinitialisation de votre mot de passe", 
                body: "Utilisez ce jeton pour réinitialiser votre mot de passe : " + resetToken + @". Accédez à la page <a href=""" + HttpUtility.HtmlAttributeEncode(resetUrl) + @""">" + resetUrl + "</a> pour réinitialiser votre mot de passe."
            );
            passwordSent = true;
        }
    }
}

<hgroup class="title">
    <h1>@Page.Title.</h1>
    <h2>Utilisez le formulaire ci-dessous pour réinitialiser votre mot de passe.</h2>
</hgroup>

@if (!WebMail.SmtpServer.IsEmpty()) {
    <p>
        Les instructions de réinitialisation de mot de passe seront envoyées à l'adresse de messagerie associée à votre compte.
    </p>

    if (passwordSent) {
        <p class="message-success">
            Les instructions de réinitialisation de mot de passe ont été envoyées à l'adresse de messagerie spécifiée.
        </p>
    }

    <form method="post">
        @AntiForgery.GetHtml()
        @Html.ValidationSummary(excludeFieldErrors: true)

        <fieldset>
            <legend>Formulaire d'instructions de réinitialisation de mot de passe</legend>
            <ol>
                <li class="email">
                    <label for="email" @if (!ModelState.IsValidField("email")) {<text>class="error-label"</text>}>Adresse de messagerie</label>
                    <input type="text" id="email" name="email" value="@email" disabled="@passwordSent" @Validation.For("email") />
                    @Html.ValidationMessage("email")
                </li>
            </ol>
            <p class="form-actions">
                <input type="submit" value="Envoyer les instructions" disabled="@passwordSent" />
            </p>
        </fieldset>
    </form>
} else {
   <p class="message-info">
       La récupération du mot de passe est désactivée pour ce site Web car le serveur SMTP n'est 
       pas configuré correctement. Veuillez contacter le propriétaire de ce site pour réinitialiser 
       votre mot de passe.
   </p>
}